声明

本文是学习GB-T 33604-2017 电力系统简单服务接口规范. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们

1 范围

本标准规定了用于电力系统生产控制及管理业务简单服务的文本型接口规范,包括文本型服务接

口的语法、语义规则,服务体系结构及流程、服务定义、服务管理、服务访问等技术内容。

本标准适用于电力系统生产控制及管理业务中使用文本型简单服务的应用场合。

2 规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文

件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB/T 16262.1—2006 信息技术 抽象语法记法一(ASN.1) 第1部分:基本记法规范

GB/T 33602 电力系统通用服务协议

DL/T 476 电力系统实时数据通信应用层协议

IEC 61850 电力应用自动化通信网络和系统(Communication networks and
systems for power

utility automation)

3 术语和定义

下列术语和定义适用于本文件。

3.1

服务接口 service interface

特定功能的形式化描述,定义了实现功能所需的参数和返回结果。

3.2

服务消费者 service consumer

根据服务接口描述访问服务的程序。

3.3

服务提供者 service provider

实现服务接口定义的功能并提供服务的程序。

3.4

简单服务 simple service

能够相对独立运行,具有简单的输入参数和输出结果的应用程序。

3.5

粗粒度服务 coarse-grained service

在一个抽象的接口中封装了大块的业务/技术的服务,以减少服务请求交互的次数。

4 缩略语

下列缩略语适用于本文件。

GB/T 33604—2017

BNF: 巴科斯范式(Backus-Naur Form)

SOA: 面向服务的体系架构(Service-Oriented Architecture)

WSDL:Web 服务描述语言(Web Services Description Language)

XML: 可扩展标记语言(eXtensible Markup Language)

5 符号定义和语法规则

5.1 符号定义

本标准参考 SOA 架构及 WSDL
语言,提出了用于电力系统的简单服务接口规范,定义了服务请求
与应答流程,并满足电力系统在线应用对效率的要求。简单服务接口规范的符号说明见表1,定义了类

型描述符、路径分隔符、参数描述的起始符和结束符等符号。

1 简单服务接口规范符号说明

序号

符号

定义

1

<S)

服务列表起始符

2

</S>

服务列表结束符

3

<

服务起始符

4

/)

服务结束符

5

<!!

系统声明起始符

6

!!>

系统声明结束符

7

//

单行注释引导符

8

<!-

多行注释起始符

9

->

多行注释结束符

10

=

赋值连接符

11

类型描述符(或用空格分隔)

12

路径分隔符

13

(

参数描述起始符

14

)

参数描述结束符

以上符号内容均采用英文半角符号。

5.2 语法规则

简单服务接口语法规范采用BNF 范式的形式进行描述,详见附录 A。

6 服务体系结构及流程

6.1 体系结构

简单服务体系由服务消费者、服务总线和服务提供者组成,体系结构见图1。图1展示了在服务体

系结构中使用简单服务接口规范进行服务的注册、定位、请求和应答的流程。

GB/T 33604—2017

服务消费者

服务总线

服务提供者

style="width:7.80694in;height:7.75347in" />

1 使用简单服务接口规范的服务体系结构示意图

6.2 服务流程

服务流程主要包括以下步骤:

a) 服务提供者注册服务定义信息;

b) 服务消费者查询服务定义信息;

c) 服务消费者接收服务定义信息;

d) 服务消费者向服务提供者发送服务请求;

e) 服务提供者接收服务请求;

f) 服务提供者返回服务应答结果;

g) 服务消费者接收服务应答结果。

7 服务定义

服务定义的描述由服务提供者负责,描述格式为:

\<ServiceName( mode typel:paraml,mode type2:param2, …)prompt />

服务定义包括服务名称、参数定界符、参数传递模式、参数类型、参数名、提示符等,具体说明如下:

a) 服务名称(ServiceName):
由服务提供者定义,名称应以英文字母开头,并由英文字母或数字 组成;

b) 参数定界符:使用一对括号"()"作为参数定界符,
一个服务可以有多个参数,所有参数都位于 括号之内,参数之间以逗号分隔;

c) 参数传递模式(mode): 参数传输模式包括输入(in)、输出
(out)和输入输出(inout)三种模式;

GB/T 33604—2017

d) 参数类型(type):采用 ASCI
字符串描述,支持基本数据类型(见表2)和基本数据类型对应的
数组。参数类型的描述分为显式和隐式两种。显式描述在类型和参数名前加冒号作为参数
类型修饰符,形如:"参数类型:参数名=参数值";隐式描述参数类型和参数名均可省略,只对
服务参数值进行描述,隐式描述仅可用于服务请求,其值所对应的参数类型和参数位置必须
与原服务所定义的类型及位置一致;

e) 参数名(param): 服务参数的具体名称;

f) 提示符(prompt): 用于服务的功能描述,可采用中文或英文。

2 参数类型支持的数据类型

序号

类型名称

描述

1

INT8

有符号8位整数

2

INT16

有符号16位整数

3

INT32

有符号32位整数

4

INT64

有符号64位整数

5

INT8U

无符号8位整数

6

INT16U

无符号16位整数

7

INT32U

无符号32位整数

8

INT64U

无符号64位整数

9

FLOAT32

有符号32位浮点数

10

FLOAT64

有符号64位浮点数

11

STRING

字符串

8 服务管理

为有效管理和检索服务,采用服务列表的方式对服务进行组织。服务列表的描述方式参考
XML

形式,典型的服务列表描述格式如下:

\<? xml version="1.0" encoding="?">

\<S v="1.0"Domain ="华北"〉

〈ServiceList(in string:hostname, out string:list file )
"服务列表服务" 〈Directory (in string:path,out
string[]:DirectoryList) “目录服务”

\<FileTrans(in string:from file , out string:to file) "文件传输服务"

\<DisplayPic(in string:pic,in int:fresh)“画面调阅服务” />

\<GridModelRT(in string:grid name,out string:result file)
“电网模型服务”

〈StateEstimate(in string:grid name, out string:result
file)"状态估计服务"

\</S>

基本规则如下:

/>

/>

/>

/>

a) 第一行为版本声明,包括 XML 版本号,编码方式等;

b) 第二行的标签 S 被定义为简单服务接口规范的特有标识符,\<S
引导一系列服务描述,v 描述 简单服务接口规范版本;

c) 域(Domain),
表示电力系统中不同级别的机构,可用多层描述,层间以路径分隔符'.'分隔,
如:“河北.衡水”;

GB/T 33604—2017

d)
从“\<S>"到“\</S>”之间可能有若干行,每行描述一个服务,格式与单行服务描述一致;

e) 提示符(prompt) 可以使用中文进行描述,为带双引号的字符串。 附录 B
列举了电力系统中适用简单服务接口规范的部分服务。

9 服务请求与应答

9.1 服务请求格式

服务请求描述以字符方式定义,描述服务原语、服务参数等内容,由服务提供者进行解析。

服务请求完整格式为:

\<Domain. ServiceName(mode typel:paraml=valuel, mode
type2:param2=value2, …)/>

服务请求包括域、服务名称、参数定界符、参数传递模式、参数类型、参数名、参数值。其中域定义见

第8章,服务名称、参数定界符、参数传递模式、参数类型、参数名定义见第7章。

在服务请求中,为简便起见,可采用隐式参数描述方式,即省略参数传递模式、参数类型和参数名

称,仅将参数值置于其参数位置,但省略部分及参数位置必须与原服务定义完全对应一致。

参数取值类型包括字符串类型、整数类型、浮点类型和数组类型等,具体描述如下:

a)
字符串类型:字符串类型用双引号或单引号定界,当字符串中含有单引号时可用双引号定界,
当字符串中含有双引号时可用单引号定界,当字符串中含有单引号和双引号时,可在单引号和
双引号前面插入反斜杠(\或\或)作为转义符以将其按一般字符处理。例如,显式描述
为:in STRING:myName= “张三”,隐式描述为:“张三”;

b)
整数类型:整数类型可采用十六进制、十进制、八进制和二进制表示,其中十六进制、八进制和
二进制分别使用0X、00 和 0B
作为引导符;整数类型数值不加引号;例如,显式描述为:in INT32:num=4,
隐式描述为:4;

c)
浮点类型:浮点数采用科学计数法或十进制表示,浮点类型数值不加引号,应有小数点;例如,
显式描述为: in FLOAT32:value=123.45,隐式描述为:123.45;

d)
数组类型:当参数类型为数组时,其参数值可用大括号}定界,也可以嵌套,如:INT32[]:
number={123,456,789}。
在这种情况下,类型修饰符和参数名不应省略,以免引起混淆。

9.2 服务应答格式

服务应答描述服务响应成功或失败的信息,应由服务消费者进行解析。

服务应答格式应采用字符形式的返回码,用于说明服务访问是否成功,并在失败时能表明错误原

因,其定义如表3所示:

3 服务应答定义

返回码

定义

200

服务访问成功

400

服务访问失败

500

服务访问超时

10 协议适配

本标准定义了访问简单服务的接口规范,并对服务请求进行了描述。服务请求可以适配到多个协

议和标准上,这些标准和协议包括:GB/T 33602、DL/T
476、IEC61850、TCP等,详见附录 C。

GB/T 33604—2017

A

(规范性附录)

电力系统简单服务接口规范语法定义

电力系统简单服务接口规范语法的BNF
定义如下,描述了规范的语法结构和组成元素。

specification::= definition

definition::= domain def "." service \|

service list

_

domain def::=domain def"."\|

domain def

_

domain def::= identifier

_

service list::= xml start headerservice list headerservice list
defservice list tail

_ _ _ _ _ _ _ _ _

xml start header::="\<? xml"version def"?>"

_ _ _

service list header::="\<S"version defsite def">"

_ _ _ _

version def::="v=""""[1-9]+".”[0-9]+"""

site def::="at=""""value"""

_

service list def::= service list def \| service

service list tail::="\</S>"

_ _

service::=[declaration \| notation]"\<"service defineprompt"/>"

declaration::=“\<!"value"!>”

notation::="//"value

service define::=service n ame"("para list")"

service name::= identifier

_

para list::="("para define")"

para define::=para define","para \|

para

para::= mode type define":"para n ame"="para value

mode::="in"\|"out"\|"inout"

type define::=type name\|

scoped n ame"[]"

type name::=int type\|

char type\|

float type\|

string type

scoped name::=int type\|

char type\|

float type\|

string type

int type::="INT8""INT8U"\|"INT16”
\|"INT16U"\|"INT32"\|"INT32U"\|"INT64\|"INT64U"

char type::="CHAR"

float type::=“FLOAT32"\|“FLOAT64”

string type::="STRING"

para name::= identifier

GB/T 33604—2017

para v alue::=simple value \| complex value

simple value::=value identifier

complex v alue::=“{"value list"}”

value list::=value list, value\|

value

value::= value identifier

_

value identifier::=int expression \| float expression \| char expression
\| string expression

int expression::=signal expressiondec expression

"OB"bin expression

hex expression::=hex num \| {hex expression

oct expression::=oct num \| {oct expression }

\|"0X"hex expression

}hex num

oct num

_

\|"00"oct expression I

dec expression::=dec num\| {dec expression }dec num

bin expression::=bin num\| {bin expression }bin num

signal expression::=[-]

hex num::=dec num \|A\|B\|C\|D\|E\|F

dec num::=oct num\|8\|9

oct num::=0\| 1\|2\|3\|4\|5\|6\|7

bin num::=0\| 1

char expression::=[0-9]\|[a-z]\|[A-Z]

float expression::= signal expressiondec expression "."dec expression \|
signal expressiondec ex-

pression"."dec expression"E" signal expressiondec expression

string expression::== ssichar expression}char expressionhar

prompt::= string expression

GB/T 33604—2017

B

(规范性附录)

标准的简单服务描述

本标准适用于以粗粒度服务集成应用程序的场景,应用程序具有简单的输入参数。以下列举了部

分使用简单服务接口规范的服务:

a) 文件服务:提供远程访问目录和文件的功能;

b)
资源查询服务:提供服务消费者访问系统中服务和资源的状态以及定位功能;

c)
事件转发服务:提供服务消费者(远程和本地)的事件收发,支持不同系统之间的事件转发;

d) 高速数据访问服务:用于快速访问简单数据结构的服务;

e)
时序数据访问服务:用于访问历史数据的服务,提供基于时序的数据访问功能。

GB/T 33604—2017

C

(规范性附录)

本标准可以适配到多个协议和标准上,包括:GB/T 33602、DL/T 476、IEC
61850、TCP 等,详见

图 C.1。

style="width:8.01389in;height:4.32014in" />

C.1 传输协议适配

延伸阅读

更多内容 可以 GB-T 33604-2017 电力系统简单服务接口规范. 进一步学习

联系我们

T-HNTA 0002—2023 旅行社标准服务规范手册.pdf